﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TSSTaskBasicClass
{
    /// <summary>
    /// 任务基类  这是一个抽象类 封装了任务入口方法、任务结束方法两个抽象方法以及任务返回数据时的一些委托
    /// </summary>
    public abstract class ABasicTaskWork : MarshalByRefObject 
    {
        /// <summary>
        /// 获取当前任务线程id
        /// </summary>
        public int threadId;
        protected string _message;
        public string Message
        {
            get
            {
                return _message;
            }
            set
            {
                _message = value;
                //调用返回给调度系统消息委托
                printfMessageOP(value, threadId);
            }
        }
        /// <summary>
        /// 任务入口
        /// </summary>
        /// <param name="instanceOfBasicTaskWork"></param>
        public abstract void DoTaskWork(object instance);
        /// <summary>
        /// 强行结束任务
        /// </summary>
        /// <returns></returns>
        public abstract bool KillTheTaskTherad();
        /// <summary>
        /// 这是一个委托变量，任务执行完毕返回结果给调度系统
        /// </summary>
        public  Action<int> endOfTaskOP;    
        /// <summary>
        /// 这是一个委托变量，给调度系统返回输出消息
        /// </summary>
        //public  PrintfMessageOP printfMessageOP;
        public Action<string,int> printfMessageOP;      
        /// <summary>
        /// 这是一个委托变量，给调度系统返回任务的执行进度
        /// </summary>
        public  Action<int,int> getTaskProgressOP;
    }
}
